home *** CD-ROM | disk | FTP | other *** search
- Programación orientada a objetos
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- La programación orientada a objetos (o OOP, object oriented programing)
- no es un nuevo compilador, ni un nuevo lenguaje, es mucho más que todo eso,
- es una nueva manera de pensar, de estructurar los programas que va mucho más
- allá de un simple lenguaje. Es relativamente nueva pues desde hace mucho
- tiempo (quizas desde cuando Babage ideó aquella maravillosa máquina) el
- hombre ha intentado ponerla en práctica, pero siempre se vió dificultado por
- la falta de potencia de los ordenadores de la época.
- Entorno a la programación orientada a objetos se ha creado un buen número
- de mitos que intentaremos concretar y discernir en el transcurso de esta
- série de artículos. No se pretenderá dar un curso para dominar en 5 dias la
- nueva filosofía, sino que se intentará ir poco a poco, paso a paso hasta
- llegar a un punto donde podremos meternos a programar cualquier cosa.
- El lenguaje elegido para esta série ha sido el C++ que, digan lo que digan,
- es tan válido para dominar la OOP como cualquier otro (lease SmallTalk,
- Eiffel, etc). He elegido este y no otro lenguaje porque será más sencillo
- para los que ya tengan un mínimo conocimiento de C y porque todos tienen
- acceso a un compilador suficientemente bueno (el de GNU es muy bueno y además
- gratuito).
- Los objetos son el centro sobre el que gira todo el universo de la OOP. Un
- objeto no es más que una abstracción informática de un objetos real, es decir
- una representación en un computador de lo que nos podemos encontrar en la
- realidad. Pero no sólo es eso, es mucho más, pues un objeto es tanto una
- bicicleta, un coche, un arbol o una persona como la felicidad, la alegria,
- un átomo o un rayo de luz. Todo lo que intentes describir en el computador
- será un objeto y como tal tendrá una série de propiedades y formas de in-
- teractuar con el resto de objetos que convivan en la jungla de bits.
- Por eso decia lo de abstracción; si intentásemos describir exahustivamente
- lo que es un hombre, por ejemplo, tendriamos que representar el número de
- cabellos que tiene, el color de sus ojos, su altura, etc. datos que en un
- programa en el que fuesemos a hacer un retrato robot de una persona podrian
- ser necesarios, pero tendriamos que describir tambien el tipo de música que
- le gusta, el número de hijos que tiene, etc. que son aspectos de los que
- podriamos prescindir sin que el programa perdiese ni pizca de funcionalidad.
- Además seria prácticamente imposible representar todas y cada uno de las
- caracteristicas de un objeto del mundo real.
- Otro aspecto interesante en el mundo de la OOP es que los objetos se
- autocontienen, es decir, si creamos un objeto "pez" que sepa nadar, la función
- que le pedirá que nade, será una función interna al objeto y no externa como
- pasaba con la metodologia tradicional. Una llamada para decirle que nade se
- asemejaria a esta: PezAzul -> Nada().
- Esto último (que los objetos estén autocontenidos) es lo que principalmente
- provoca que la reutilización sea una realidad, ya que al estar separadas unas
- clases de otras es muy sencillo coger una clase e implementarla en otro
- programa (siempre y cuando la clase esté bien programada). Se me ha escapado
- (intencionadamente) la palabra "clase" que es, simplemente, la estructura que
- aglutina los objetos, es donde están autocontenidas las funciones de que
- dispone un objeto. Un ejemplo de clase perro en pseudo-código podria ser:
-
- clase Perro
- entero color_del_pelo
- entero raza
- entero edad
- funcion ladra()
- funcion corre()
- funcion come()
- fin clase
-
- En C++ se deben crear 2 ficheros por cada clase: uno con la descripción de
- la clase (.HPP o .HH) y otro con la implementación de ésta clase (.CPP o .CC).
- En el segundo fichero, y siguiendo el ejemplo de arriba, se deberia escribir
- el código de las funciones ladra(), corre() y come() teniendo en cuenta que
- la clase es un territorio aislado, que no conoce nada más que a sus própios
- miembros. Programando mal se puede caer en la tentación de hacer como si
- conocieramos las variables de una supuesta clase "gato" y podemos meter la
- pata modificando las variables de "gato" directamente. El compilador con muy
- buen juicio nos mostrará un mensaje de error, pero existe una forma que los
- malos programadores de C++ utilizan a deshora para que no haya ningún error
- de compilación (el problema vendrá a la hora de reutilizar el código).
- El último punto que veremos en este número es el de la herencia. Como su
- propio nombre nos da a entre ver, la herencia consiste en en dar a un nuevo
- objeto todas (caso del C++) o alguna de las propiedades de otro objeto ya
- creado. El nuevo objeto podrá tener algunas caracteristicas própias además de
- las heredadas y de esta forma es mucho más sencillo ampliar un programa
- (más concesiones a la reutilización). En el ejemplo de la clase "perro"
- anterior, podria haber heredado de una clase mayor llamada "mamífero" que
- aglutinara a todos los animales que se alimentan de leche materna al nacer.
- Y esta clase "mamífero" podría haber sido heredada a su vez de un clase
- "animal" que compartieran todos los animales y de esta misma clase podría
- colgar otra llamada "reptil" y así tantas clases como quisieramos creariamos
- a partir de unas clases más simples otras más complejas.
-
- animal
- / \
- / \
- / \
- mamífero reptil
- / \ / \
- / \ / \
- Perro ··· ··· ···
-
- Espero que con esta pequeña introducción haya quedado claro apróximadamente
- que es la OOP y que es lo que la hace tan atractiva a la hora de crear grandes
- proyectos (la reutilización). En el próximo número seguiremos ahondando en la
- programación con objetos, veremos que es la sobrecarga y empezaremos con el
- código real.
-